package com.gxa.modules.mapper;

import com.gxa.modules.dto.CommissionDTO;
import com.gxa.modules.dto.DataStatisticsDTO;
import com.gxa.modules.dto.DetailedDTO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.Date;
import java.util.List;
import java.util.Map;

@Repository
public interface DataStatisticsMapper {
    Integer[] findByDay();

    Integer[] findByWeek();

    Integer[] findByMonth();

    Integer[] findAllCount();

    List<DataStatisticsDTO> analysis1(@Param("dateF") String dateF,@Param("dateL") String dateL);

    List<DataStatisticsDTO> analysis2(@Param("dateF") String dateF,@Param("dateL") String dateL);

    List<DataStatisticsDTO> analysis3(@Param("dateF") String dateF,@Param("dateL") String dateL);

    List<DataStatisticsDTO> analysis4(@Param("dateF") String dateF,@Param("dateL") String dateL);

    List<DataStatisticsDTO> analysis5(@Param("dateF") String dateF,@Param("dateL") String dateL);

    List<DataStatisticsDTO> analysis6(@Param("dateF") String dateF,@Param("dateL") String dateL);

    List<DataStatisticsDTO> statisticsByEmpByWeek();

    List<DataStatisticsDTO> statisticsByEmpByMonth();

    List<DataStatisticsDTO> statisticsByEmp(@Param("dataF") String dataF, @Param("dataL") String dataL, @Param("currentPage") Integer currentPage, @Param("pageSize") Integer pageSize);

    List<DataStatisticsDTO> statisticsByDeptByWeek();

    List<DataStatisticsDTO> statisticsByDeptByMonth();

    List<DataStatisticsDTO> statisticsByDept(@Param("dataF") String dataF, @Param("dataL") String dataL, @Param("currentPage") Integer currentPage, @Param("pageSize") Integer pageSize);

    List<DataStatisticsDTO> orderStatisticsByEmpByWeek();

    List<DataStatisticsDTO> orderStatisticsByEmpByMonth();

    List<DataStatisticsDTO> orderStatisticsByEmp(@Param("dataF") String dataF, @Param("dataL") String dataL, @Param("currentPage") Integer currentPage, @Param("pageSize") Integer pageSize);

    List<DataStatisticsDTO> orderStatisticsByDeptByWeek();

    List<DataStatisticsDTO> orderStatisticsByDeptByMonth();

    List<DataStatisticsDTO> orderStatisticsByDeptByDept(@Param("dataF") String dataF, @Param("dataL") String dataL, @Param("currentPage") Integer currentPage, @Param("pageSize") Integer pageSize);

    List<DataStatisticsDTO> aStatisticsByEmpByWeek();

    List<DataStatisticsDTO> aStatisticsByEmpByMonth();

    List<DataStatisticsDTO> aStatisticsByEmpByEmp(@Param("dataF") String dataF, @Param("dataL") String dataL, @Param("currentPage") Integer currentPage, @Param("pageSize") Integer pageSize);

    List<DataStatisticsDTO> aStatisticsByDeptByWeek();

    List<DataStatisticsDTO> aStatisticsByDeptByMonth();

    List<DataStatisticsDTO> aStatisticsByDeptByDept(@Param("dataF") String dataF, @Param("dataL") String dataL, @Param("currentPage") Integer currentPage, @Param("pageSize") Integer pageSize);

    List<DataStatisticsDTO> afterStatisticsByEmpByWeek();

    List<DataStatisticsDTO> afterStatisticsByEmpByMonth();

    List<DataStatisticsDTO> afterStatisticsByEmpByEmp(@Param("dataF") String dataF, @Param("dataL") String dataL, @Param("currentPage") Integer currentPage, @Param("pageSize") Integer pageSize);

    List<DataStatisticsDTO> afterStatisticsByDeptByWeek();

    List<DataStatisticsDTO> afterStatisticsByDeptByMonth();

    List<DataStatisticsDTO> afterStatisticsByDeptByDept(@Param("dataF") String dataF, @Param("dataL") String dataL, @Param("currentPage") Integer currentPage, @Param("pageSize") Integer pageSize);

    List<DataStatisticsDTO> annualCurve1();

    List<DataStatisticsDTO> annualCurve2();

    List<DataStatisticsDTO> annualCurve3();

    List<DataStatisticsDTO> annualCurve4();

    List<DataStatisticsDTO> annualCurve5();

    List<CommissionDTO> commission(@Param("dataF") String dataF, @Param("dataL") String dataL, @Param("currentPage") Integer currentPage, @Param("pageSize") Integer pageSize);

    List<DetailedDTO> detailedByEmp(@Param("dataF") String dataF, @Param("dataL") String dataL, @Param("currentPage") Integer currentPage, @Param("pageSize") Integer pageSize);

    List<DetailedDTO> detailedByDept(@Param("dataF") String dataF, @Param("dataL") String dataL, @Param("currentPage") Integer currentPage, @Param("pageSize") Integer pageSize);

    List<Integer> getTotalMoney(@Param("dataF") String dataF, @Param("dataL") String dataL, @Param("currentPage") Integer currentPage, @Param("pageSize") Integer pageSize);
}
